import { isFunction } from '@/utils/validate'

/**
 * 请求操作类型枚举
 */
const OperateTypeEnum = {
  QUERY: {
    label: '查询',
    value: 0,
  },
  CREATE: {
    label: '创建',
    value: 1,
  },
  MODIFY: {
    label: '修改',
    value: 2,
  },
  DELETE: {
    label: '删除',
    value: 3,
  },
  LOGIN: {
    label: '登录',
    value: 4,
  },
  LOGOUT: {
    label: '退出',
    value: 5,
  },

  /**
   * 获取所有的枚举
   * @return {*[]}枚举数组
   */
  allEnums() {
    let enums = []
    for (let key in OperateTypeEnum) {
      if (!isFunction(OperateTypeEnum[key])) {
        enums.push(OperateTypeEnum[key])
      }
    }
    return enums
  },
  /**
   * 根据 label 获取 枚举
   * @param label label
   * @return {*} 对应的枚举
   */
  getEnumByLabel(label) {
    for (let key in OperateTypeEnum) {
      if (OperateTypeEnum[key].label === label) {
        return OperateTypeEnum[key]
      }
    }
    return {}
  },

  /**
   * 根据 label 获取 枚举
   * @param value value
   * @return {*} 对应的枚举
   */
  getEnumByValue(value) {
    for (let key in OperateTypeEnum) {
      if (OperateTypeEnum[key].value === value) {
        return OperateTypeEnum[key]
      }
    }
    return {}
  },
}
// 设置当前对象只读
Object.freeze(OperateTypeEnum)

export default OperateTypeEnum
